SQLAlchemy তে Declarative Base একটি বিশেষ কৌশল, যা ডেটাবেস টেবিলগুলির সাথে Python ক্লাসগুলিকে সংযুক্ত করতে ব্যবহৃত হয়। এটি ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ অংশ এবং SQLAlchemy এর ORM ব্যবহারে সাধারণত ব্যবহৃত হয়। Declarative Base ক্লাসের মাধ্যমে আপনি Python ক্লাসগুলোকে ডেটাবেস টেবিলের সাথে ম্যাপ করতে পারেন, যা টেবিলের কাঠামো (schema) এবং সম্পর্ক (relationship) সংজ্ঞায়িত করে।
Declarative Base এর সাহায্যে ক্লাসগুলো সহজে তৈরি করা যায় এবং সেগুলোকে ডেটাবেস টেবিল হিসেবে ব্যবহার করা যায়।
Declarative Base এর ধারণা
Declarative Base একটি ক্লাস যা SQLAlchemy এর Base অবজেক্ট থেকে ইনহেরিট করা হয় এবং এটি class-based টেবিল ম্যাপিং পদ্ধতি সরবরাহ করে। এর মাধ্যমে, Python ক্লাসকে সরাসরি ডেটাবেস টেবিলের সাথে যুক্ত করা সম্ভব হয়। যখন ক্লাসটি Base থেকে ইনহেরিট করে, তখন ক্লাসের অ্যাট্রিবিউটগুলি টেবিলের কলাম হিসাবে আচরণ করতে শুরু করে।
Declarative Base কিভাবে কাজ করে?
- Base ক্লাস তৈরি করা: প্রথমে,
declarative_base()ফাংশন ব্যবহার করে একটিBaseক্লাস তৈরি করতে হয়। - Python ক্লাস তৈরি করা: তারপর, আপনি আপনার Python ক্লাস তৈরি করেন এবং তাকে
Baseথেকে ইনহেরিট করেন। - টেবিলের কাঠামো সংজ্ঞায়িত করা: Python ক্লাসে কলামগুলো সংজ্ঞায়িত করতে
Columnব্যবহার করা হয়, যেখানে প্রতিটি কলামের নাম, ডেটা টাইপ এবং অন্যান্য বৈশিষ্ট্য (যেমনprimary_key=True,nullable=Falseইত্যাদি) দেওয়া হয়। - ডেটাবেসে টেবিল তৈরি করা: পরে,
Base.metadata.create_all()মেথড ব্যবহার করে ডেটাবেসে টেবিল তৈরি করা হয়।
Declarative Base উদাহরণ
ধরা যাক, আমরা একটি User নামক টেবিল তৈরি করতে চাই, যার মধ্যে id, name, এবং age কলাম থাকবে। নিচে SQLAlchemy তে Declarative Base ব্যবহার করে কীভাবে কাজ করা যায় তা দেখানো হল:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Declarative Base তৈরি করা
Base = declarative_base()
# Python ক্লাস তৈরি করা, যা টেবিলের সাথে ম্যাপ হবে
class User(Base):
__tablename__ = 'users' # টেবিলের নাম
id = Column(Integer, primary_key=True) # প্রাথমিক কী
name = Column(String) # নাম কলাম
age = Column(Integer) # বয়স কলাম
# SQLite ডেটাবেসের জন্য ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)
# টেবিল তৈরি করা
Base.metadata.create_all(engine)
# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()
# নতুন ইউজার ইনসার্ট করা
new_user = User(name="Alice", age=30)
session.add(new_user)
session.commit()
# ইউজার রিড করা
users = session.query(User).all()
for user in users:
print(user.name, user.age)
# সেশন বন্ধ করা
session.close()
এখানে:
Baseক্লাস:declarative_base()ফাংশন দিয়ে একটিBaseক্লাস তৈরি করা হয়েছে।Userক্লাস:Userনামক Python ক্লাস তৈরি করা হয়েছে, যাBaseক্লাস থেকে ইনহেরিট করে। এই ক্লাসের মাধ্যমেusersটেবিলের কাঠামো এবং কলাম সংজ্ঞায়িত করা হয়েছে।- টেবিল তৈরি:
Base.metadata.create_all(engine)এর মাধ্যমে ডেটাবেসেusersটেবিল তৈরি করা হয়েছে। - ডেটা ম্যানিপুলেশন: Session ব্যবহার করে নতুন ইউজার ইনসার্ট করা হয়েছে এবং সব ইউজার রিড করা হয়েছে।
Declarative Base এর সুবিধা
- সহজ এবং পরিষ্কার কোড: Declarative Base ব্যবহারে কোড লেখা সহজ এবং পরিষ্কার হয়, কারণ এতে ক্লাসের মাধ্যমে টেবিল এবং কলাম সংজ্ঞায়িত করা হয়।
- ORM পদ্ধতির সাথে সংযুক্তি: ORM ব্যবহার করতে হলে
Declarative Baseএকটি শক্তিশালী এবং নির্ভরযোগ্য পদ্ধতি সরবরাহ করে। - এটি টেবিল ও ক্লাসের মধ্যে একটি সোজাসুজি সম্পর্ক স্থাপন করে, যা ডেটাবেস অপারেশনগুলোকে অবজেক্ট-ওরিয়েন্টেড পদ্ধতিতে করতে সাহায্য করে।
Declarative Base এবং Table অবজেক্টের পার্থক্য
| বিষয় | Declarative Base | Table অবজেক্ট |
|---|---|---|
| ব্যবহার | Python ক্লাসকে টেবিলের সাথে সংযুক্ত করার জন্য | SQLAlchemy Core এর মাধ্যমে সরাসরি টেবিল কাঠামো তৈরি |
| ম্যাপিং পদ্ধতি | ক্লাস থেকে টেবিল তৈরি এবং Column ডিফাইন করা | টেবিল এবং কলাম সংজ্ঞায়িত করা হয়। |
| টেবিলের কাঠামো | Python ক্লাসের মাধ্যমে | MetaData এবং Table অবজেক্টের মাধ্যমে |
| টেবিল সম্পর্ক | Base থেকে ইনহেরিট করা হয় | Table অবজেক্টের মাধ্যমে সম্পর্ক নির্ধারণ করা হয় |
সারাংশ
Declarative Base SQLAlchemy ORM ব্যবহারে একটি শক্তিশালী এবং সুবিধাজনক পদ্ধতি। এটি Python ক্লাস এবং ডেটাবেস টেবিলের মধ্যে সম্পর্ক স্থাপন করতে সাহায্য করে। Base থেকে ইনহেরিট করা ক্লাসের মাধ্যমে টেবিলের কাঠামো সহজেই সংজ্ঞায়িত করা যায়, যা ডেটাবেস ম্যানিপুলেশনকে আরো পরিষ্কার এবং কার্যকর করে তোলে। SQLAlchemy ORM এর মাধ্যমে Declarative Base পদ্ধতি ডেটাবেস টেবিল ও তাদের সম্পর্কের জন্য একটি রিডেবল এবং পরিষ্কার সমাধান প্রদান করে।
Read more